<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>qLibc: containers/qstack.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">qLibc
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('qstack_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">qstack.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Stack implementation.  
<a href="#details">More...</a></p>

<p><a href="qstack_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad59200fd9723a575e042365b916e150b"><td class="memItemLeft" align="right" valign="top">qstack_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#ad59200fd9723a575e042365b916e150b">qstack</a> (int options)</td></tr>
<tr class="memdesc:ad59200fd9723a575e042365b916e150b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new stack container.  <a href="#ad59200fd9723a575e042365b916e150b">More...</a><br/></td></tr>
<tr class="separator:ad59200fd9723a575e042365b916e150b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a243157bbd832b1a29da906cdf1e067d1"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a243157bbd832b1a29da906cdf1e067d1">qstack_setsize</a> (qstack_t *stack, size_t max)</td></tr>
<tr class="memdesc:a243157bbd832b1a29da906cdf1e067d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;setsize(): Sets maximum number of elements allowed in this stack.  <a href="#a243157bbd832b1a29da906cdf1e067d1">More...</a><br/></td></tr>
<tr class="separator:a243157bbd832b1a29da906cdf1e067d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6bd78d22c5ac2a5dbcc4102416a1682"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#af6bd78d22c5ac2a5dbcc4102416a1682">qstack_push</a> (qstack_t *stack, const void *data, size_t size)</td></tr>
<tr class="memdesc:af6bd78d22c5ac2a5dbcc4102416a1682"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;push(): Pushes an element onto the top of this stack.  <a href="#af6bd78d22c5ac2a5dbcc4102416a1682">More...</a><br/></td></tr>
<tr class="separator:af6bd78d22c5ac2a5dbcc4102416a1682"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c626c12f0f8ad9b1899c4d6e9fa78a6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a3c626c12f0f8ad9b1899c4d6e9fa78a6">qstack_pushstr</a> (qstack_t *stack, const char *str)</td></tr>
<tr class="memdesc:a3c626c12f0f8ad9b1899c4d6e9fa78a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;pushstr(): Pushes a string onto the top of this stack.  <a href="#a3c626c12f0f8ad9b1899c4d6e9fa78a6">More...</a><br/></td></tr>
<tr class="separator:a3c626c12f0f8ad9b1899c4d6e9fa78a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a227a2c394e088afee835b79aa1e81a90"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a227a2c394e088afee835b79aa1e81a90">qstack_pushint</a> (qstack_t *stack, int64_t num)</td></tr>
<tr class="memdesc:a227a2c394e088afee835b79aa1e81a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;pushint(): Pushes a integer onto the top of this stack.  <a href="#a227a2c394e088afee835b79aa1e81a90">More...</a><br/></td></tr>
<tr class="separator:a227a2c394e088afee835b79aa1e81a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79ecf0838fc92a6fde5e43fcac757426"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a79ecf0838fc92a6fde5e43fcac757426">qstack_pop</a> (qstack_t *stack, size_t *size)</td></tr>
<tr class="memdesc:a79ecf0838fc92a6fde5e43fcac757426"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;pop(): Removes a element at the top of this stack and returns that element.  <a href="#a79ecf0838fc92a6fde5e43fcac757426">More...</a><br/></td></tr>
<tr class="separator:a79ecf0838fc92a6fde5e43fcac757426"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a4924e9e1201c9049d0baa68d4c1da7"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a5a4924e9e1201c9049d0baa68d4c1da7">qstack_popstr</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:a5a4924e9e1201c9049d0baa68d4c1da7"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;popstr(): Removes a element at the top of this stack and returns that element.  <a href="#a5a4924e9e1201c9049d0baa68d4c1da7">More...</a><br/></td></tr>
<tr class="separator:a5a4924e9e1201c9049d0baa68d4c1da7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a355b4b772da518e3e63702e61df44886"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a355b4b772da518e3e63702e61df44886">qstack_popint</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:a355b4b772da518e3e63702e61df44886"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;popint(): Removes a integer at the top of this stack and returns that element.  <a href="#a355b4b772da518e3e63702e61df44886">More...</a><br/></td></tr>
<tr class="separator:a355b4b772da518e3e63702e61df44886"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20cfe4a51fa37348293d199b22530b04"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a20cfe4a51fa37348293d199b22530b04">qstack_popat</a> (qstack_t *stack, int index, size_t *size)</td></tr>
<tr class="memdesc:a20cfe4a51fa37348293d199b22530b04"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;popat(): Returns and remove the element at the specified position in this stack.  <a href="#a20cfe4a51fa37348293d199b22530b04">More...</a><br/></td></tr>
<tr class="separator:a20cfe4a51fa37348293d199b22530b04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae38a11a6be7fbea79f3ca51c65a4aee"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#aae38a11a6be7fbea79f3ca51c65a4aee">qstack_get</a> (qstack_t *stack, size_t *size, bool newmem)</td></tr>
<tr class="memdesc:aae38a11a6be7fbea79f3ca51c65a4aee"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;<a class="el" href="qhttpclient_8c.html#af16a3eb0912e8b5d4896466632d9c843" title="qhttpclient-&gt;get(): Downloads a file from the remote host using GET method. ">get()</a>: Returns an element at the top of this stack without removing it.  <a href="#aae38a11a6be7fbea79f3ca51c65a4aee">More...</a><br/></td></tr>
<tr class="separator:aae38a11a6be7fbea79f3ca51c65a4aee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e2940f626e655f803cb78c452780c1a"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a6e2940f626e655f803cb78c452780c1a">qstack_getstr</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:a6e2940f626e655f803cb78c452780c1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;getstr(): Returns an string at the top of this stack without removing it.  <a href="#a6e2940f626e655f803cb78c452780c1a">More...</a><br/></td></tr>
<tr class="separator:a6e2940f626e655f803cb78c452780c1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af37f84c47e9cd48b3f070fa96777029e"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#af37f84c47e9cd48b3f070fa96777029e">qstack_getint</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:af37f84c47e9cd48b3f070fa96777029e"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;getint(): Returns an integer at the top of this stack without removing it.  <a href="#af37f84c47e9cd48b3f070fa96777029e">More...</a><br/></td></tr>
<tr class="separator:af37f84c47e9cd48b3f070fa96777029e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a513b235ab408d98c6324fbef841e3e1a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a513b235ab408d98c6324fbef841e3e1a">qstack_getat</a> (qstack_t *stack, int index, size_t *size, bool newmem)</td></tr>
<tr class="memdesc:a513b235ab408d98c6324fbef841e3e1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;getat(): Returns an element at the specified position in this stack without removing it.  <a href="#a513b235ab408d98c6324fbef841e3e1a">More...</a><br/></td></tr>
<tr class="separator:a513b235ab408d98c6324fbef841e3e1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3eac4be39a2ae68c7290735b034fc66c"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a3eac4be39a2ae68c7290735b034fc66c">qstack_size</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:a3eac4be39a2ae68c7290735b034fc66c"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;size(): Returns the number of elements in this stack.  <a href="#a3eac4be39a2ae68c7290735b034fc66c">More...</a><br/></td></tr>
<tr class="separator:a3eac4be39a2ae68c7290735b034fc66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ca1db3402919fe147e32a16ee56a051"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a1ca1db3402919fe147e32a16ee56a051">qstack_clear</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:a1ca1db3402919fe147e32a16ee56a051"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;clear(): Removes all of the elements from this stack.  <a href="#a1ca1db3402919fe147e32a16ee56a051">More...</a><br/></td></tr>
<tr class="separator:a1ca1db3402919fe147e32a16ee56a051"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af40fcb35c362981495c37aa7963ff50d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#af40fcb35c362981495c37aa7963ff50d">qstack_debug</a> (qstack_t *stack, FILE *out)</td></tr>
<tr class="memdesc:af40fcb35c362981495c37aa7963ff50d"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;debug(): Print out stored elements for debugging purpose.  <a href="#af40fcb35c362981495c37aa7963ff50d">More...</a><br/></td></tr>
<tr class="separator:af40fcb35c362981495c37aa7963ff50d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a091ec90ef14302cb29ea07c1ce84b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qstack_8c.html#a2a091ec90ef14302cb29ea07c1ce84b2">qstack_free</a> (qstack_t *stack)</td></tr>
<tr class="memdesc:a2a091ec90ef14302cb29ea07c1ce84b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">qstack-&gt;free(): Free qstack_t  <a href="#a2a091ec90ef14302cb29ea07c1ce84b2">More...</a><br/></td></tr>
<tr class="separator:a2a091ec90ef14302cb29ea07c1ce84b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Stack implementation. </p>
<p>qstack container is a stack implementation. It represents a last-in-first-out(LIFO). It extends qlist container that allow a linked-list to be treated as a stack.</p>
<div class="fragment"><div class="line">[Conceptional Data Structure Diagram]</div>
<div class="line"></div>
<div class="line">                     top     bottom</div>
<div class="line">DATA PUSH/POP &lt;==&gt; [ C ][ B ][ A ]</div>
<div class="line">(positive index)     0    1    2</div>
<div class="line">(negative index)    -3   -2   -1</div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="comment">// create stack</span></div>
<div class="line">qstack_t *stack = <a class="code" href="qstack_8c.html#ad59200fd9723a575e042365b916e150b">qstack</a>(QSTACK_THREADSAFE);</div>
<div class="line"></div>
<div class="line"><span class="comment">// example: integer stack</span></div>
<div class="line">stack-&gt;pushint(stack, 1);</div>
<div class="line">stack-&gt;pushint(stack, 2);</div>
<div class="line">stack-&gt;pushint(stack, 3);</div>
<div class="line"></div>
<div class="line">printf(<span class="stringliteral">&quot;popint(): %d\n&quot;</span>, stack-&gt;popint(stack));</div>
<div class="line">printf(<span class="stringliteral">&quot;popint(): %d\n&quot;</span>, stack-&gt;popint(stack));</div>
<div class="line">printf(<span class="stringliteral">&quot;popint(): %d\n&quot;</span>, stack-&gt;popint(stack));</div>
<div class="line"></div>
<div class="line"><span class="comment">// example: string stack</span></div>
<div class="line">stack-&gt;pushstr(stack, <span class="stringliteral">&quot;A string&quot;</span>);</div>
<div class="line">stack-&gt;pushstr(stack, <span class="stringliteral">&quot;B string&quot;</span>);</div>
<div class="line">stack-&gt;pushstr(stack, <span class="stringliteral">&quot;C string&quot;</span>);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">char</span> *str = stack-&gt;popstr(stack);</div>
<div class="line">printf(<span class="stringliteral">&quot;popstr(): %s\n&quot;</span>, str);</div>
<div class="line">free(str);</div>
<div class="line">str = stack-&gt;popstr(stack);</div>
<div class="line">printf(<span class="stringliteral">&quot;popstr(): %s\n&quot;</span>, str);</div>
<div class="line">free(str);</div>
<div class="line">str = stack-&gt;popstr(stack);</div>
<div class="line">printf(<span class="stringliteral">&quot;popstr(): %s\n&quot;</span>, str);</div>
<div class="line">free(str);</div>
<div class="line"></div>
<div class="line"><span class="comment">// example: object stack</span></div>
<div class="line">stack-&gt;push(stack, <span class="stringliteral">&quot;A object&quot;</span>, <span class="keyword">sizeof</span>(<span class="stringliteral">&quot;A object&quot;</span>));</div>
<div class="line">stack-&gt;push(stack, <span class="stringliteral">&quot;B object&quot;</span>, <span class="keyword">sizeof</span>(<span class="stringliteral">&quot;B object&quot;</span>));</div>
<div class="line">stack-&gt;push(stack, <span class="stringliteral">&quot;C object&quot;</span>, <span class="keyword">sizeof</span>(<span class="stringliteral">&quot;C object&quot;</span>));</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> *obj = stack-&gt;pop(stack, NULL);</div>
<div class="line">printf(<span class="stringliteral">&quot;pop(): %s\n&quot;</span>, (<span class="keywordtype">char</span>*)obj);</div>
<div class="line">free(obj);</div>
<div class="line">str = stack-&gt;pop(stack, NULL);</div>
<div class="line">printf(<span class="stringliteral">&quot;pop(): %s\n&quot;</span>, (<span class="keywordtype">char</span>*)obj);</div>
<div class="line">free(obj);</div>
<div class="line">str = stack-&gt;pop(stack, NULL);</div>
<div class="line">printf(<span class="stringliteral">&quot;pop(): %s\n&quot;</span>, (<span class="keywordtype">char</span>*)obj);</div>
<div class="line">free(obj);</div>
<div class="line"></div>
<div class="line"><span class="comment">// release</span></div>
<div class="line">stack-&gt;free(stack);</div>
<div class="line"></div>
<div class="line">[Output]</div>
<div class="line">popint(): 3</div>
<div class="line">popint(): 2</div>
<div class="line">popint(): 1</div>
<div class="line">popstr(): C string</div>
<div class="line">popstr(): B string</div>
<div class="line">popstr(): A string</div>
<div class="line">pop(): C object</div>
<div class="line">pop(): B object</div>
<div class="line">pop(): A object</div>
</div><!-- fragment --> 
<p>Definition in file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ad59200fd9723a575e042365b916e150b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">qstack_t* qstack </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>options</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new stack container. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">options</td><td>combination of initialization options.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced qstack_t container, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line">qstack_t *stack = <a class="code" href="qstack_8c.html#ad59200fd9723a575e042365b916e150b">qstack</a>(QSTACK_THREADSAFE);</div>
</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Available options:<ul>
<li>QSTACK_THREADSAFE - make it thread-safe. </li>
</ul>
</dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00129">129</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a243157bbd832b1a29da906cdf1e067d1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t qstack_setsize </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;setsize(): Sets maximum number of elements allowed in this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">max</td><td>maximum number of elements. 0 means no limit.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>previous maximum number. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00177">177</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="af6bd78d22c5ac2a5dbcc4102416a1682"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qstack_push </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;push(): Pushes an element onto the top of this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">data</td><td>a pointer which points data memory. </td></tr>
    <tr><td class="paramname">size</td><td>size of the data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>EINVAL : Invalid argument.</li>
<li>ENOBUFS : Stack full. Only happens when this stack has set to have limited number of elements)</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00195">195</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a3c626c12f0f8ad9b1899c4d6e9fa78a6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qstack_pushstr </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;pushstr(): Pushes a string onto the top of this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">data</td><td>a pointer which points data memory. </td></tr>
    <tr><td class="paramname">size</td><td>size of the data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>EINVAL : Invalid argument.</li>
<li>ENOBUFS : Stack full. Only happens when this stack has set to have limited number of elements.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00213">213</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a227a2c394e088afee835b79aa1e81a90"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qstack_pushint </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int64_t&#160;</td>
          <td class="paramname"><em>num</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;pushint(): Pushes a integer onto the top of this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">num</td><td>integer data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOBUFS : Stack full. Only happens when this stack has set to have limited number of elements.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00233">233</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a79ecf0838fc92a6fde5e43fcac757426"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qstack_pop </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;pop(): Removes a element at the top of this stack and returns that element. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Stack is empty.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00249">249</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a5a4924e9e1201c9049d0baa68d4c1da7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* qstack_popstr </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;popstr(): Removes a element at the top of this stack and returns that element. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced string element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Stack is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The string element should be pushed through pushstr(). </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00267">267</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a355b4b772da518e3e63702e61df44886"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t qstack_popint </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;popint(): Removes a integer at the top of this stack and returns that element. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an integer value, otherwise returns 0. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Stack is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The integer element should be pushed through pushint(). </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00291">291</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a20cfe4a51fa37348293d199b22530b04"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qstack_popat </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;popat(): Returns and remove the element at the specified position in this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">index</td><td>index at which the specified element is to be inserted </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ERANGE : Index out of range.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Negative index can be used for addressing a element from the bottom in this stack. For example, index -1 will always pop a element which is pushed at very first time. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00320">320</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="aae38a11a6be7fbea79f3ca51c65a4aee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qstack_get </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>newmem</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;<a class="el" href="qhttpclient_8c.html#af16a3eb0912e8b5d4896466632d9c843" title="qhttpclient-&gt;get(): Downloads a file from the remote host using GET method. ">get()</a>: Returns an element at the top of this stack without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored. </td></tr>
    <tr><td class="paramname">newmem</td><td>whether or not to allocate memory for the element. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Stack is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced element, otherwise returns NULL. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00337">337</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a6e2940f626e655f803cb78c452780c1a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* qstack_getstr </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;getstr(): Returns an string at the top of this stack without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced string element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Stack is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The string element should be pushed through pushstr(). </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00355">355</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="af37f84c47e9cd48b3f070fa96777029e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t qstack_getint </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;getint(): Returns an integer at the top of this stack without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an integer value, otherwise returns 0. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Stack is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The integer element should be pushed through pushint(). </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00379">379</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a513b235ab408d98c6324fbef841e3e1a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qstack_getat </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>newmem</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;getat(): Returns an element at the specified position in this stack without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">index</td><td>index at which the specified element is to be inserted </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored. </td></tr>
    <tr><td class="paramname">newmem</td><td>whether or not to allocate memory for the element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ERANGE : Index out of range.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Negative index can be used for addressing a element from the bottom in this stack. For example, index -1 will always get a element which is pushed at very first time. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00409">409</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a3eac4be39a2ae68c7290735b034fc66c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t qstack_size </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;size(): Returns the number of elements in this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of elements in this stack. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00420">420</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a1ca1db3402919fe147e32a16ee56a051"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void qstack_clear </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;clear(): Removes all of the elements from this stack. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00429">429</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="af40fcb35c362981495c37aa7963ff50d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qstack_debug </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>out</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;debug(): Print out stored elements for debugging purpose. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer. </td></tr>
    <tr><td class="paramname">out</td><td>output stream FILE descriptor such like stdout, stderr.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00441">441</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
<a class="anchor" id="a2a091ec90ef14302cb29ea07c1ce84b2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void qstack_free </td>
          <td>(</td>
          <td class="paramtype">qstack_t *&#160;</td>
          <td class="paramname"><em>stack</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qstack-&gt;free(): Free qstack_t </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stack</td><td>qstack container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>always returns true. </dd></dl>

<p>Definition at line <a class="el" href="qstack_8c_source.html#l00452">452</a> of file <a class="el" href="qstack_8c_source.html">qstack.c</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_0b61c55142250c0cc363383afd8075a4.html">containers</a></li><li class="navelem"><a class="el" href="qstack_8c.html">qstack.c</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
